description = "Spring WebFlux"

apply plugin: "kotlin"
apply plugin: "kotlinx-serialization"

dependencies {
	api(project(":spring-beans"))
	api(project(":spring-core"))
	api(project(":spring-web"))
	api("io.projectreactor:reactor-core")
	optional(project(":spring-context"))
	optional(project(":spring-context-support"))  // for FreeMarker support
	optional("com.fasterxml.jackson.core:jackson-databind")
	optional("com.fasterxml.jackson.dataformat:jackson-dataformat-smile")
	optional("com.google.protobuf:protobuf-java-util")
	optional("io.projectreactor.netty:reactor-netty-http")
	optional("io.projectreactor.netty:reactor-netty5-http")
	optional("io.undertow:undertow-websockets-jsr")
	optional("jakarta.servlet:jakarta.servlet-api")
	optional("jakarta.validation:jakarta.validation-api")
	optional("jakarta.websocket:jakarta.websocket-api")
	optional("jakarta.websocket:jakarta.websocket-client-api")
	optional("org.apache.tomcat:tomcat-websocket") {
		exclude group: "org.apache.tomcat", module: "tomcat-servlet-api"
		exclude group: "org.apache.tomcat", module: "tomcat-websocket-api"
	}
	optional("org.eclipse.jetty.ee10.websocket:jetty-ee10-websocket-jetty-server") {
		exclude group: "jakarta.servlet", module: "jakarta.servlet-api"
	}
	optional("org.freemarker:freemarker")
	optional("org.jetbrains.kotlin:kotlin-reflect")
	optional("org.jetbrains.kotlin:kotlin-stdlib")
	optional("org.jetbrains.kotlinx:kotlinx-coroutines-reactor")
	optional("org.webjars:webjars-locator-core")
	optional("org.webjars:webjars-locator-lite")
	testImplementation(testFixtures(project(":spring-beans")))
	testImplementation(testFixtures(project(":spring-core")))
	testImplementation(testFixtures(project(":spring-web")))
	testImplementation("com.fasterxml:aalto-xml")
	testImplementation("com.squareup.okhttp3:mockwebserver")
	testImplementation("io.micrometer:micrometer-observation-test")
	testImplementation("io.projectreactor:reactor-test")
	testImplementation("io.reactivex.rxjava3:rxjava")
	testImplementation("io.undertow:undertow-core")
	testImplementation("jakarta.xml.bind:jakarta.xml.bind-api")
	testImplementation("jakarta.validation:jakarta.validation-api")
	testImplementation("org.apache.httpcomponents.client5:httpclient5")
	testImplementation("org.apache.httpcomponents.core5:httpcore5-reactive")
	testImplementation("org.apache.tomcat:tomcat-util")
	testImplementation("org.apache.tomcat.embed:tomcat-embed-core")
	testImplementation("org.eclipse.jetty:jetty-reactive-httpclient")
	testImplementation("org.eclipse.jetty:jetty-server")
	testImplementation("org.hibernate:hibernate-validator")
	testImplementation("org.jetbrains.kotlin:kotlin-script-runtime")
	testImplementation("org.jetbrains.kotlinx:kotlinx-serialization-json")
	testRuntimeOnly("com.sun.xml.bind:jaxb-core")
	testRuntimeOnly("com.sun.xml.bind:jaxb-impl")
	testRuntimeOnly("com.sun.activation:jakarta.activation")
	testRuntimeOnly("io.netty:netty5-buffer")
	testRuntimeOnly("org.glassfish:jakarta.el")
	testRuntimeOnly("org.jetbrains.kotlin:kotlin-scripting-jsr223")
	testRuntimeOnly("org.jruby:jruby")
	testRuntimeOnly("org.python:jython-standalone")
	testRuntimeOnly("org.webjars:underscorejs")
}

test {
	maxParallelForks = 4
}
